# -*- coding: utf-8 -*-
"""
@Time    : 2024/7/13 14:46 
@Author  : ZhangShenao 
@File    : manual_release_memory.py
@Desc    : 手动释放内存

可以通过 del a 来删除对象的引用
然后强制调用gc.collect()函数,清除没有引用的对象
即可手动启动垃圾回收
"""
import gc

from print_memory_usage import print_memory_usage


def manual_release_memory():
    """手动释放内存"""

    print_memory_usage('init')  # 14.66 MB

    # 创建大对象
    a = [i for i in range(1000000)]
    print_memory_usage('after create big instance')  # 52.73 MB

    # 通过 del a 来删除对象的引用
    del a

    # 强制调用gc.collect()函数,清除没有引用的对象
    gc.collect()

    print_memory_usage('after manual release memory')  # 22.25 MB


if __name__ == '__main__':
    manual_release_memory()
